package miage.ecom.Shell;


import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import miage.ecom.commandes.ShellCommand;
import miage.ecom.Shell.ShellContext;

   



public abstract class ShellContextImpl implements ShellContext {
    private Map _commands;
    private Map _environnementVariables;
    public ShellContextImpl(Map commands){
    _commands=commands;
    _environnementVariables=new TreeMap();
    }
    /**
    * retourne la liste de commandes
    * @return
    */
    @Override
    public synchronized ShellCommand[] getCommands() {
    ShellCommand[] cmds=new ShellCommand[_commands.size()];
    Iterator iterator=_commands.values().iterator();
    for(int i=0;iterator.hasNext(); i++) {
    cmds[i]=(ShellCommand)iterator.next();	
    }
    return cmds;
    }
    /**
    * renvoie la variable correspondante
    * @param key
    * @return
    */
    
    
    
    
    @Override
    public Object getVar(String key){
    return _environnementVariables.get(key);
    }
    /**
    * renvoie la liste de nom des variables
    * @return
    */
    @Override
    public Set getVarNames(){
    return _environnementVariables.keySet();
    }
    /**
    * ajoute une variable
    * @param key
    * @param value
    */
    @Override
    public void setVar(String key, Object value){
    _environnementVariables.put(key,value);
    }
    /**
    * supprime une variable
    * @param key
    * @return
    */
    @Override
    public Object unsetVar(String key){
    return _environnementVariables.remove(key);
    }
    } 